Stefan Kangas [Wed, 2 Dec 2020 09:19:16 +0000 (10:19 +0100)]
Remove specific byte-compiler warnings for cl.el
* lisp/emacs-lisp/bytecomp.el (byte-compile-warning-types)
(byte-compile-warnings, byte-compile-cl-file-p)
(byte-compile-eval, byte-compile-eval-before-compile)
(byte-compile-arglist-warn, byte-compile-find-cl-functions)
(byte-compile-cl-warn, displaying-byte-compile-warnings)
(byte-compile-file-form-require, byte-compile-form): Remove all
specific cl.el warnings, as that library is now obsolete. The
regular obsoletion warnings are sufficiently discouraging.
* lisp/emacs-lisp/advice.el (ad-compile-function): Don't try to
silence the now removed warning.
* doc/lispref/tips.texi (Coding Conventions):
* doc/misc/cl.texi (Organization): Make recommendation to not use
cl.el and cl-compat.el stronger.
* lisp/obsolete/cl.el: Make alias help say that they are obsolete.
* lisp/obsolete/cl-compat.el (build-klist, safe-idiv)
(pair-with-newsyms): Silence byte-compiler.
Dmitry Gutov [Wed, 2 Dec 2020 02:28:35 +0000 (04:28 +0200)]
Improve .gitignore and project-vc-ignores handling
* lisp/progmodes/project.el (project-ignores):
Convert .gitignore entries more faithfully.
(project--vc-list-files): Convert "our" ignore entries to
"proper" globs, which is what Git pathspec requires.
Dmitry Gutov [Tue, 1 Dec 2020 23:41:40 +0000 (01:41 +0200)]
Use project--value-in-dir
* lisp/progmodes/project.el (project-files):
Use 'project--value-in-dir'. To have any changes in
'project-vc-ignores' take effect immediately.
Juri Linkov [Tue, 1 Dec 2020 20:33:43 +0000 (22:33 +0200)]
Fix documentation of window-in-direction arg MINIBUF (bug#44932)
* doc/lispref/windows.texi (Windows and Frames): Rename MINI arg
of window-in-direction to MINIBUF. Explain the non-nil non-t value.
Glenn Morris [Tue, 1 Dec 2020 15:50:12 +0000 (07:50 -0800)]
; Merge from origin/emacs-27
The following commit was skipped:
8e73259093 (origin/emacs-27, emacs-27) ; Auto-commit of loaddefs files.
Glenn Morris [Tue, 1 Dec 2020 15:50:12 +0000 (07:50 -0800)]
Merge from origin/emacs-27
749e4b7e0b Reset xref-show-xrefs-function temporarily
3e6525d69f Don't show in 'view-lossage' responses to xterm feature qu...
9fbff9c35c ; * src/buffer.c: Fix comment describing 'buffer_defaults'.
Glenn Morris [Tue, 1 Dec 2020 15:50:12 +0000 (07:50 -0800)]
; Merge from origin/emacs-27
The following commit was skipped:
9e0085064b Adapt Tramp versions. Do not merge
Glenn Morris [Tue, 1 Dec 2020 15:50:09 +0000 (07:50 -0800)]
Merge from origin/emacs-27
9939c435c1 Return the correct suffix in eww-make-unique-file-name
17fa17be3d Save bookmarks by using `write-file' (bug#12507)
2cdf1fd261 Fix filing messages when 'rmail-output-reset-deleted-flag'...
a72db8ab8b Make file copying in tramp-gvfs more robust
f31cacd1ff Revert "Fix incorrect handling of module runtime and envir...
cdc632fbe6 Fix incorrect handling of module runtime and environment p...
c9160bda78 CC Mode: Fix error in cache handling. This fixes bug #43481
Michael Albinus [Tue, 1 Dec 2020 14:39:38 +0000 (15:39 +0100)]
* lisp/arc-mode.el (archive-get-descr): Use default mode if needed.
Glenn Morris [Tue, 1 Dec 2020 14:27:56 +0000 (06:27 -0800)]
; Auto-commit of loaddefs files.
Glenn Morris [Tue, 1 Dec 2020 14:12:37 +0000 (06:12 -0800)]
; Auto-commit of loaddefs files.
Michael Albinus [Tue, 1 Dec 2020 12:37:27 +0000 (13:37 +0100)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs into master
Michael Albinus [Tue, 1 Dec 2020 12:37:03 +0000 (13:37 +0100)]
Allow Tramp to mirror traces to a file
* doc/misc/tramp.texi (Traces and Profiles): Add `tramp-debug-to-file'.
* lisp/net/tramp-adb.el (tramp-adb-parse-device-names)
(tramp-adb-get-device):
* lisp/net/tramp-cmds.el (tramp-rename-files):
* lisp/net/tramp-gvfs.el (tramp-gvfs-monitor-process-filter)
(tramp-gvfs-handler-volumeadded-volumeremoved)
(tramp-get-media-devices):
* lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch)
(tramp-sh-gio-monitor-process-filter)
(tramp-sh-gvfs-monitor-dir-process-filter)
(tramp-sh-inotifywait-process-filter, tramp-maybe-send-script)
(tramp-find-inline-encoding):
* lisp/net/tramp-smb.el (tramp-smb-handle-copy-directory)
(tramp-smb-handle-file-acl, tramp-smb-handle-set-file-acl):
Use `tramp-compat-string-replace'.
* lisp/net/tramp-compat.el (tramp-compat-string-replace): New defalias.
* lisp/net/tramp.el (tramp-debug-to-file): New defcustom.
(tramp-get-debug-buffer): Simplify.
(tramp-get-debug-file-name): New defun.
(tramp-debug-message): Write debug file if indicated.
Michael Albinus [Tue, 1 Dec 2020 12:36:07 +0000 (13:36 +0100)]
* etc/NEWS: Add user option 'tramp-debug-to-file'.
Stefan Kangas [Tue, 1 Dec 2020 12:34:17 +0000 (13:34 +0100)]
Fix byte-compiler warning for failed uses of lexical vars
* lisp/emacs-lisp/bytecomp.el (byte-compile-form): Fix byte-compiler
warning for failed uses of lexical vars. (Bug#44980)
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp--define-warning-file-test): Don't prefix tests with
'warn'.
(bytecomp/error-lexical-var-with-add-hook\.el)
(bytecomp/error-lexical-var-with-remove-hook\.el)
(bytecomp/error-lexical-var-with-run-hook-with-args-until-failure\.el)
(bytecomp/error-lexical-var-with-run-hook-with-args-until-success\.el)
(bytecomp/error-lexical-var-with-run-hook-with-args\.el)
(bytecomp/error-lexical-var-with-symbol-value\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-symbol-value.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args-until-success.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args-until-failure.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-remove-hook.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-add-hook.el:
New files.
Zajcev Evgeny [Tue, 1 Dec 2020 08:33:05 +0000 (09:33 +0100)]
Fix use of 'switch-to-buffer-preserve-window-point'
* lisp/window.el (switch-to-buffer): Respect buffer local value
of 'switch-to-buffer-preserve-window-point' variable.
Stefan Kangas [Tue, 1 Dec 2020 03:46:33 +0000 (04:46 +0100)]
Add tests for some byte-compiler warnings
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-warn/warn-interactive-only\.el)
(bytecomp-warn/warn-obsolete-defun\.el)
(bytecomp-warn/warn-obsolete-hook\.el)
(bytecomp-warn/warn-obsolete-variable-same-file\.el)
(bytecomp-warn/warn-obsolete-variable\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/warn-interactive-only.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-defun.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-hook.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-variable-same-file.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-variable.el:
New files.
Dmitry Gutov [Tue, 1 Dec 2020 01:46:27 +0000 (03:46 +0200)]
Reset xref-show-xrefs-function temporarily
* lisp/dired-aux.el (dired-do-find-regexp-and-replace):
Make sure xref-show-xrefs-function has the necessary value (bug#44905).
Stefan Kangas [Mon, 30 Nov 2020 21:44:09 +0000 (22:44 +0100)]
Decrease code duplication in byte-compiler free-vars warning
* lisp/emacs-lisp/bytecomp.el
(byte-compile-free-vars-warn): New defun extracted from...
(byte-compile-variable-ref, byte-compile-variable-set): ...here.
Stefan Kangas [Mon, 30 Nov 2020 21:42:08 +0000 (22:42 +0100)]
Test byte-compiler free variable warning
* test/lisp/emacs-lisp/bytecomp-tests.el (ert-x): Require.
(bytecomp--define-warning-file-test): New macro.
(bytecomp-warn/warn-free-setq\.el)
(bytecomp-warn/warn-free-variable-reference\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el:
New files.
Stefan Kangas [Mon, 30 Nov 2020 18:56:59 +0000 (19:56 +0100)]
* lisp/so-long.el: Doc fix to reduce use of passive voice.
Eli Zaretskii [Mon, 30 Nov 2020 18:44:11 +0000 (20:44 +0200)]
Don't show in 'view-lossage' responses to xterm feature queries
* lisp/term/xterm.el (xterm--read-event-for-query): Prevent
recording the characters read as the xterm response to a query,
so as not to show them in 'view-lossage'. (Bug#44908)
Eli Zaretskii [Mon, 30 Nov 2020 18:42:06 +0000 (20:42 +0200)]
; * src/buffer.c: Fix comment describing 'buffer_defaults'.
Michael Albinus [Mon, 30 Nov 2020 12:54:29 +0000 (13:54 +0100)]
Some adaptions to tramp-tests.el
* test/lisp/net/tramp-tests.el (tramp-test-vec): Check for remote
`tramp-test-temporary-file-directory'.
(tramp-test11-copy-file, tramp-test12-rename-file):
Do not skip for tramp-gvfs.el.
(tramp--test-sh-p): Use `tramp-test-vec'.
Michael Albinus [Mon, 30 Nov 2020 12:44:44 +0000 (13:44 +0100)]
Adapt Tramp versions
* doc/misc/tramp.texi (Obtaining @value{tramp}):
(Remote shell setup, Remote processes, Archive file names):
* lisp/net/trampver.el (customize-package-emacs-version-alist):
Adapt Tramp versions.
Michael Albinus [Mon, 30 Nov 2020 12:19:19 +0000 (13:19 +0100)]
Adapt Tramp versions. Do not merge
* doc/misc/tramp.texi (Obtaining @value{tramp})
(Remote shell setup, Remote processes, Archive file names):
* doc/misc/trampver.texi:
* lisp/net/tramp.el:
* lisp/net/trampver.el (tramp-version)
(customize-package-emacs-version-alist): Adapt Tramp versions.
Dmitry Gutov [Mon, 30 Nov 2020 01:33:14 +0000 (03:33 +0200)]
Improve docstrings
* lisp/progmodes/project.el (project-find-file)
(project-or-external-find-file): More accurate docstrings (bug#44588).
Philipp Stephani [Sun, 29 Nov 2020 20:13:02 +0000 (21:13 +0100)]
Fix double-free bug when finalizing module runtimes.
* src/emacs-module.c (finalize_runtime_unwind): Don't finalize initial
environment twice.
* test/src/emacs-module-resources/mod-test.c (emacs_module_init):
Allocate lots of values during module initialization to trigger the
bug.
Juri Linkov [Sun, 29 Nov 2020 19:54:53 +0000 (21:54 +0200)]
* lisp/simple.el (read-from-kill-ring): Call current-kill to prefill kill-ring
Juri Linkov [Sun, 29 Nov 2020 19:48:01 +0000 (21:48 +0200)]
Fix MINIBUF 'nomini' arg for windmove/window-in-direction (bug#44932)
* lisp/windmove.el (windmove-display-in-direction)
(windmove-delete-in-direction, windmove-swap-states-in-direction):
Add 'nomini' as MINIBUF arg of window-in-direction.
* lisp/window.el (window-in-direction): Rename arg MINI to MINIBUF.
Update docstring from walk-window-tree.
Send MINIBUF arg to walk-window-tree unchanged.
Alan Third [Fri, 27 Nov 2020 22:11:47 +0000 (22:11 +0000)]
Allow doprint to handle multibyte chars in format (bug#44349)
* src/doprnt.c (doprnt): Handle the case where fmtchar is the start of
a multibyte character.
Protesilaos Stavrou [Sun, 29 Nov 2020 10:43:38 +0000 (11:43 +0100)]
Make log-view-commit-body less intrusive
* lisp/vc/log-view.el (log-view-commit-body): Inherit from
font-lock-comment-face. This makes expanded commit messages in
log-view look the same as they did prior to commit
1f0b929430 (consult
bug#44424) (bug#44937).
Akira Kyle [Sun, 29 Nov 2020 10:40:47 +0000 (11:40 +0100)]
Return the correct suffix in eww-make-unique-file-name
* lisp/net/eww.el (eww-make-unique-file-name): Return the correct
suffix (bug#44936).
Lars Ingebrigtsen [Sun, 29 Nov 2020 10:10:42 +0000 (11:10 +0100)]
frame-position doc string clarificaton
* src/frame.c (Fframe_position): Mention that the values are
system-dependent (bug#32977).
Lars Ingebrigtsen [Sun, 29 Nov 2020 10:05:10 +0000 (11:05 +0100)]
garbage-collect doc string clarification
* src/alloc.c (Fgarbage_collect): Mention that calling this
function is not guaranteed to collect all the garbage (bug#34404).
Lars Ingebrigtsen [Sun, 29 Nov 2020 09:54:58 +0000 (10:54 +0100)]
Tweak eww-use-browse-url doc string
* lisp/net/eww.el (eww-use-browse-url): Tweak doc string wording.
Karl Fogel [Sun, 29 Nov 2020 00:17:46 +0000 (18:17 -0600)]
Save bookmarks by using `write-file' (bug#12507)
Go back to using `write-file' to save bookmarks, instead of using
`write-region'. This means numbered backups of the bookmark file may
get made again, depending on the value of `bookmark-version-control'.
Thanks especially to Drew Adams and Eli Zaretskii for their
persistence in tracking down information relevant to this change.
Eli Zaretskii [Sat, 28 Nov 2020 17:05:18 +0000 (19:05 +0200)]
Fix filing messages when 'rmail-output-reset-deleted-flag' is non-nil
* lisp/mail/rmailout.el (rmail-output): Fix off-by-one error in
deciding when to advance to the next message under non-nil
'rmail-output-reset-deleted-flag'. (Bug#44839)
Lele Gaifax [Sat, 28 Nov 2020 08:48:09 +0000 (09:48 +0100)]
Update TUTORIAL.it
* etc/tutorials/TUTORIAL.it: Follow changes made to TUTORIAL in the
last year
Michael Albinus [Sat, 28 Nov 2020 11:31:43 +0000 (12:31 +0100)]
Make file copying in tramp-gvfs more robust
* test/lisp/net/tramp-tests.el (tramp-test11-copy-file)
(tramp-test12-rename-file): Do not skip for tramp-gvfs.el.
* lisp/net/tramp-gvfs.el (tramp-gvfs-do-copy-or-rename-file):
Add sanity checks.
Mattias Engdegård [Sat, 28 Nov 2020 11:28:45 +0000 (12:28 +0100)]
* etc/tutorials/TUTORIAL.sv: General copy-editing.
Eli Zaretskii [Sat, 28 Nov 2020 07:21:33 +0000 (09:21 +0200)]
Revert "Fix incorrect handling of module runtime and environment pointers."
This reverts commit
cdc632fbe6e149318147a98cccf1b7af191f2ce8.
Those changes are too significant and non-trivial to be
suitable for a release branch at this time.
Philipp Stephani [Fri, 27 Nov 2020 18:08:55 +0000 (19:08 +0100)]
Fix incorrect handling of module runtime and environment pointers.
We used to store module runtime and environment pointers in the static
lists Vmodule_runtimes and Vmodule_environments. However, this is
incorrect because these objects have to be kept per-thread. With this
naive approach, interleaving module function calls in separate threads
leads to environments being removed in the wrong order, which in turn
can cause local module values to be incorrectly garbage-collected.
Instead, turn Vmodule_runtimes and Vmodule_environments into
hashtables keyed by the thread objects. The fix is relatively
localized and should therefore be safe enough for the release branch.
Module assertions now have to walk the pointer list for the current
thread, which is more correct since they now only find environments
for the current thread.
Also add a unit test that exemplifies the problem. It interleaves two
module calls in two threads so that the first call ends while the
second one is still active. Without this change, this test triggers
an assertion failure.
* src/emacs-module.c (Fmodule_load, initialize_environment)
(finalize_environment, finalize_runtime_unwind): Store runtime and
environment pointers in per-thread lists.
(syms_of_module): Initialize runtimes and environments hashtables.
(module_assert_runtime, module_assert_env, value_to_lisp): Consider
only objects for the current thread.
(module_gc_hash_table_size, module_hash_push, module_hash_pop): New
generic hashtable helper functions.
(module_objects, module_push_pointer, module_pop_pointer): New helper
functions to main thread-specific lists of runtime and environment
pointers.
(mark_modules): Mark all environments in all threads.
* test/data/emacs-module/mod-test.c (Fmod_test_funcall): New test
function.
(emacs_module_init): Bind it.
* test/src/emacs-module-tests.el (emacs-module-tests--variable): New
helper type to guard access to state in a thread-safe way.
(emacs-module-tests--wait-for-variable)
(emacs-module-tests--change-variable): New helper functions.
(emacs-module-tests/interleaved-threads): New unit test.
Mattias Engdegård [Fri, 27 Nov 2020 20:16:15 +0000 (21:16 +0100)]
Use correct glyph in title when resizing NS frames
* src/nsterm.m ([EmacsView windowWillResize:toSize:]): Use ×, not x.
Philipp Stephani [Fri, 27 Nov 2020 18:08:55 +0000 (19:08 +0100)]
Fix incorrect handling of module runtime and environment pointers.
We used to store module runtime and environment pointers in the static
lists Vmodule_runtimes and Vmodule_environments. However, this is
incorrect because these objects have to be kept per-thread. With this
naive approach, interleaving module function calls in separate threads
leads to environments being removed in the wrong order, which in turn
can cause local module values to be incorrectly garbage-collected.
The fix isn't completely trivial: specbinding the lists wouldn't work
either, because then the garbage collector wouldn't find the
environments in other threads than the current ones, again leading to
objects being garbage-collected incorrectly. While introducing custom
pseudovector types would fix this, it's simpler to put the runtime and
environment pointers into the specbinding list as new specbinding
kinds. This works since we need to unwind them anyway, and we only
ever treat the lists as a stack. The thread switching machinery
ensures that the specbinding lists are thread-local, and that all
elements of the specbinding lists in all threads are marked during
garbage collection.
Module assertions now have to walk the specbinding list for the
current thread, which is more correct since they now only find
environments for the current thread. As a result, we can now remove
the faulty Vmodule_runtimes and Vmodule_environments variables
entirely.
Also add a unit test that exemplifies the problem. It interleaves two
module calls in two threads so that the first call ends while the
second one is still active. Without this change, this test triggers
an assertion failure.
* src/lisp.h (enum specbind_tag): Add new tags for module runtimes and
environments.
* src/eval.c (record_unwind_protect_module): New function to record a
module object in the specpdl list.
(do_one_unbind): Unwind module objects.
(backtrace_eval_unrewind, default_toplevel_binding, lexbound_p)
(Fbacktrace__locals): Deal with new specbinding types.
(mark_specpdl): Mark module environments as needed.
* src/alloc.c (garbage_collect): Remove call to 'mark-modules'.
Garbage collection of module values is now handled as part of marking
the specpdl of each thread.
* src/emacs-module.c (Fmodule_load, funcall_module): Use specpdl to
record module runtimes and environments.
(module_assert_runtime, module_assert_env, value_to_lisp): Walk
through specpdl list instead of list variables.
(mark_module_environment): Rename from 'mark_modules'. Don't attempt
to walk though current thread's environments only, since that would
miss other threads.
(initialize_environment, finalize_environment): Don't change
Vmodule_environments variable; environments are now in the specpdl
list.
(finalize_environment_unwind, finalize_runtime_unwind): Make 'extern'
since do_one_unbind now calls them.
(finalize_runtime_unwind): Don't change Vmodule_runtimes variable;
runtimes are now in the specpdl list.
(syms_of_module): Remove Vmodule_runtimes and Vmodule_environments.
* test/data/emacs-module/mod-test.c (Fmod_test_funcall): New test
function.
(emacs_module_init): Bind it.
* test/src/emacs-module-tests.el (emacs-module-tests--variable): New
helper type to guard access to state in a thread-safe way.
(emacs-module-tests--wait-for-variable)
(emacs-module-tests--change-variable): New helper functions.
(emacs-module-tests/interleaved-threads): New unit test.
Philipp Stephani [Fri, 27 Nov 2020 19:04:20 +0000 (20:04 +0100)]
; * src/lisp.h (enum specbind_tag): Fix typo.
Stefan Monnier [Fri, 27 Nov 2020 15:19:21 +0000 (10:19 -0500)]
* lisp/subr.el (activate-change-group): Refine fix for bug#33341
Mattias Engdegård [Tue, 24 Nov 2020 11:05:47 +0000 (12:05 +0100)]
Make the 'cucumber' compilation pattern work without 'omake'
When 'omake' is included in compilation-error-regexp-alist, which it
still is by default, then all other rules are modified to match with
an extra leading 6 spaces as well. The 'cucumber' pattern relied on
this in order to work as intended.
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Extend the 'cucumber' pattern so that it works even when 'omake'
is not included. Move it below the 'gnu' rule so that it doesn't
match anything else.
Mattias Engdegård [Fri, 27 Nov 2020 14:29:22 +0000 (15:29 +0100)]
Update TUTORIAL.de and TUTORIAL.fr
* etc/tutorials/TUTORIAL.de:
* etc/tutorials/TUTORIAL.fr: Follow recent changes in TUTORIAL.
Stefan Monnier [Fri, 27 Nov 2020 14:43:56 +0000 (09:43 -0500)]
* lisp/subr.el (activate-change-group): Fix bug#33341
Stefan Kangas [Fri, 27 Nov 2020 09:36:15 +0000 (10:36 +0100)]
Update TUTORIAL.es
* etc/tutorials/TUTORIAL.es: A followup to recent changes in
TUTORIAL.
Stefan Kangas [Fri, 27 Nov 2020 09:22:42 +0000 (10:22 +0100)]
Update TUTORIAL.sv
* etc/tutorials/TUTORIAL.sv: A followup to recent changes in
TUTORIAL. Minor tweaks for grammar and style.
Juri Linkov [Fri, 27 Nov 2020 09:17:12 +0000 (11:17 +0200)]
Add completion-tab-width to align prefix chars with names in read-char-by-name
* lisp/international/mule-cmds.el (mule--ucs-names-affixation):
Replace mule--ucs-names-annotation to display chars in prefixes
that implements two FIXME items.
(read-char-by-name): Let-bind completion-tab-width to 4.
Use affixation-function instead of annotation-function.
* lisp/minibuffer.el (completion-tab-width): New variable.
(completion--insert-strings): Align colwidth to tab positions
when completion-tab-width is non-nil.
* lisp/simple.el (completion-setup-function): Set tab-width to
completion-tab-width when completion-tab-width is non-nil.
https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg01263.html
Juri Linkov [Fri, 27 Nov 2020 09:00:43 +0000 (11:00 +0200)]
* lisp/simple.el (read-from-kill-ring): Use frame-text-cols, not frame-width.
Eli Zaretskii [Fri, 27 Nov 2020 08:50:15 +0000 (10:50 +0200)]
Update TUTORIAL.he
* etc/tutorials/TUTORIAL.he: A followup to recent changes in
TUTORIAL.
Lars Ingebrigtsen [Fri, 27 Nov 2020 08:23:53 +0000 (09:23 +0100)]
Fix up previous server exit directory deletion
* lisp/server.el (server-start): Only delete the server directory
if it's in /tmp (bug#44644).
Dario Gjorgjevski [Thu, 26 Nov 2020 10:59:23 +0000 (11:59 +0100)]
Fix modification check when custom-form is `lisp'
* lisp/cus-edit.el (custom-variable-modified-p): Quote the value when
custom form is 'lisp (or 'mismatch) prior to comparing in order to
accommodate `custom-variable-value-create' (bug#44852).
Mattias Engdegård [Thu, 26 Nov 2020 16:08:26 +0000 (17:08 +0100)]
Remove keyboard anachronisms from tutorial
* etc/tutorials/TUTORIAL: Don't keep referring to EDIT as if it were a
common name for the Meta key; since a few decades back it's labelled
Alt (or Option or ⌥ but those keys usually also have 'alt' engraved on
them). Similarly, CTL is practically extinct and not worth
mentioning.
Mattias Engdegård [Wed, 25 Nov 2020 14:32:08 +0000 (15:32 +0100)]
Fix replace-regexp-in-string substring match data translation
For certain patterns, re-matching the same regexp on the matched
substring does not produce correctly translated match data
(bug#15107 and bug#44861).
Using a new builtin function also improves performance since the
number of calls to string-match is halved.
Reported by Kevin Ryde and Shigeru Fukaya.
* lisp/subr.el (replace-regexp-in-string): Translate the match data
using match-data--translate instead of trusting a call to string-match
on the matched string to do the job.
* test/lisp/subr-tests.el (subr-replace-regexp-in-string):
Add test cases.
* src/search.c (Fmatch_data__translate): New internal function.
(syms_of_search): Register it as a subroutine.
Alan Mackenzie [Thu, 26 Nov 2020 11:37:38 +0000 (11:37 +0000)]
CC Mode: Fix error in cache handling. This fixes bug #43481
* lisp/progmodes/cc-engine.el (c-full-pp-to-literal): Handle correctly END
being before HERE by using parse-partial-sexp to get the end of the literal
containing HERE.
Lars Ingebrigtsen [Thu, 26 Nov 2020 10:24:20 +0000 (11:24 +0100)]
Keep point in the *eldoc* buffer in eldoc-display-in-echo-area
* lisp/emacs-lisp/eldoc.el (eldoc-display-in-echo-area): Use
'save-excursion' to keep point position in *eldoc* buffer.
Suggested by Andrii Kolomoiets <andreyk.mad@gmail.com>.
Lars Ingebrigtsen [Thu, 26 Nov 2020 10:00:35 +0000 (11:00 +0100)]
Allow following symlinks when recompiling directories
* doc/lispref/compile.texi (Compilation Functions): Document it.
* lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Allow
following symlinks (bug#10292).
Stefan Kangas [Thu, 26 Nov 2020 06:00:19 +0000 (07:00 +0100)]
; * etc/NEWS: Add some missing documentation markers.
Stefan Kangas [Thu, 26 Nov 2020 05:37:18 +0000 (06:37 +0100)]
* lisp/files.el (auto-mode-alist): Add entry for "archive-contents".
Eric Abrahamsen [Wed, 25 Nov 2020 23:26:06 +0000 (15:26 -0800)]
Add "replied" -> "answered" for gnus-search imap searches
* lisp/gnus/gnus-search.el (gnus-search-imap-handle-flag): This allows
"mark:A" to be translated into "ANSWERED" and "-mark:A" to be
translated into "UNANSWERED".
Eric Abrahamsen [Sat, 14 Nov 2020 21:37:08 +0000 (13:37 -0800)]
Assume default imap TEXT search even when not using parsed queries
This behavior both better matches the previous nnir behavior, reducing
confusion for new users, and matches behavior when using parsed
queries.
* lisp/gnus/gnus-search.el (gnus-search-imap-search-keys): Make sure
this variable contains all known IMAP search keys.
(gnus-search-run-search): If the search query doesn't start with a
known search key, prepend "TEXT " to the query.
Michael Albinus [Wed, 25 Nov 2020 21:13:33 +0000 (22:13 +0100)]
Use null-device where appropriate
* lisp/filesets.el (filesets-select-command):
* lisp/shell.el (shell-mode):
* lisp/term.el (term-exec-1):
* lisp/wdired.el (wdired-do-symlink-changes):
* lisp/cedet/ede/pmake.el (ede-proj-makefile-create):
* lisp/eshell/esh-io.el (eshell-set-output-handle):
* lisp/gnus/gnus-fun.el (gnus-grab-cam-x-face):
* lisp/gnus/mml2015.el (mml2015-epg-key-image):
* lisp/gnus/smime.el (smime-noverify-region):
* lisp/org/ob-picolisp.el (org-babel-execute:picolisp):
* lisp/org/ob-screen.el (org-babel-prep-session:screen)
(org-babel-prep-session:screen):
* lisp/play/fortune.el (fortune-quiet-strfile-options):
* lisp/progmodes/cperl-mode.el (cperl-pod2man-build-command):
* lisp/progmodes/sh-script.el (sh-tmp-file):
* lisp/vc/diff-mode.el (diff-add-log-current-defuns)
(diff--font-lock-prettify):
* lisp/vc/ediff-mult.el (ediff-patch-file-form-meta):
* lisp/vc/ediff-ptch.el (ediff-map-patch-buffer)
(ediff-fixup-patch-map, ediff-dispatch-file-patching-job):
* lisp/vc/vc.el (vc-diff-internal): Use null-device or (null-device),
respectively. (Bug#3736)
Juri Linkov [Wed, 25 Nov 2020 20:24:11 +0000 (22:24 +0200)]
* lisp/minibuffer.el (completions-format): Add new value 'one-column'.
* lisp/minibuffer.el (completion--insert-strings): Support 'one-column'.
* lisp/simple.el (read-from-kill-ring): Truncate strings at frame-width.
Stefan Monnier [Wed, 25 Nov 2020 19:49:55 +0000 (14:49 -0500)]
(defvar): Detect defining a variable currently lexically bound
* src/eval.c (lexbound_p): New function.
(Finternal__define_uninitialized_variable): Use it.
Mattias Engdegård [Wed, 25 Nov 2020 12:56:39 +0000 (13:56 +0100)]
Add tests for replace-regexp-in-string
* test/lisp/subr-tests.el (subr-replace-regexp-in-string): New.
Mattias Engdegård [Wed, 25 Nov 2020 11:39:56 +0000 (12:39 +0100)]
* doc/lispref/searching.texi (Rx Constructs): Group numbering fix
Michael Albinus [Wed, 25 Nov 2020 11:24:08 +0000 (12:24 +0100)]
* test/lisp/net/tramp-tests.el (tramp-test29-start-file-process):
Use `tramp--test-windows-nt-p'.
Michael Albinus [Wed, 25 Nov 2020 11:18:23 +0000 (12:18 +0100)]
Merge from origin/emacs-27
6442cdc0e4 Revert extra focus redirection in do_switch_frame (Bug#24803)
fc4379f1ae Minor cleanup of tramp-tests.el on MS Windows
dea3d6aa18 Fix handling of defcustom :local tag
Michael Albinus [Wed, 25 Nov 2020 10:49:54 +0000 (11:49 +0100)]
; Merge from origin/emacs-27
The following commit was skipped:
b2ee665024 CC Mode. Fix an off by one error. Fixes bug #41809
Michael Albinus [Wed, 25 Nov 2020 10:49:54 +0000 (11:49 +0100)]
Merge from origin/emacs-27
f425a774c2 Fix display artifacts when 'display' properties cover newl...
Martin Rudalics [Wed, 25 Nov 2020 08:58:21 +0000 (09:58 +0100)]
Revert extra focus redirection in do_switch_frame (Bug#24803)
* src/frame.c (do_switch_frame): Do not also redirect frame
focus when FRAME has its minibuffer window on the selected
frame which was intended to fix Bug#24500. It may cause
Bug#24803 and lead to a nasty state where no active cursor is
shown on any frame, see
https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg01137.html.
Juri Linkov [Wed, 25 Nov 2020 08:46:59 +0000 (10:46 +0200)]
Add 'completions-detailed' to add prefix/suffix with 'affixation-function'
* doc/lispref/minibuf.texi (Completion Variables)
(Programmed Completion): Add affixation-function.
* lisp/help-fns.el (help--symbol-completion-table-affixation): New function.
(help--symbol-completion-table): Set affixation-function when
completions-detailed is non-nil.
* lisp/minibuffer.el (completion-metadata): Add affixation-function
to docstring.
(completions-annotations): Inherit from shadow with italic.
(completions-detailed): New defcustom.
(completion--insert-strings): Count string-width on all strings in
completion list. Insert prefix and suffix.
(completion-extra-properties): Add affixation-function to docstring.
(minibuffer-completion-help): Call affixation-function.
(minibuffer-default-prompt-format): Move down closer to its use.
https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg00613.html
Michael Albinus [Wed, 25 Nov 2020 08:41:11 +0000 (09:41 +0100)]
Minor cleanup of tramp-tests.el on MS Windows
* test/lisp/net/tramp-tests.el (tramp-test29-start-file-process):
Do not test remote pty on MS Windows.
Lars Ingebrigtsen [Wed, 25 Nov 2020 05:29:10 +0000 (06:29 +0100)]
Move code in face-remap.el to avoid a compilation warning
* lisp/face-remap.el (text-scale--refresh): Move code to avoid
compilation warning.
In text-scale--refresh:
face-remap.el:241:14: Warning: reference to free variable ‘text-scale-mode’
Stefan Kangas [Wed, 25 Nov 2020 02:03:48 +0000 (03:03 +0100)]
Make text-scale-mode optionally adjust the header line
* lisp/face-remap.el
(text-scale-remap-header-line-face): New buffer local variable.
(text-scale-mode): Adjust header line if above variable is non-nil.
(face-remap--clear-remappings, face-remap--remap-face): New defuns.
* lisp/face-remap.el: Arrange to watch text-scale-mode-remapping.
(text-scale--refresh): New function.
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode): Use
text-scale-remap-header-line. (Bug#41852)
Juri Linkov [Tue, 24 Nov 2020 19:23:41 +0000 (21:23 +0200)]
Yank items selected from kill-ring using completion and minibuffer history
* doc/emacs/killing.texi (Earlier Kills): Document standalone M-y.
* doc/emacs/search.texi (Isearch Yank): Explain standalone M-y.
* doc/lispref/text.texi (Yank Commands): Soften the wording of
yank after another yank.
* lisp/delsel.el: Put 'yank' property on yank-pop and yank-from-kill-ring.
* lisp/isearch.el (isearch-yank-pop): Use with-isearch-suspended
and read-from-kill-ring to read a string from the kill-ring and
append it to the search string.
* lisp/simple.el (yank-pop): Call yank-from-kill-ring and
read-from-kill-ring when last-command is not 'yank' instead of
signaling an error. Remove "*" from interactive spec. Update docstring.
(read-from-kill-ring): New function.
(yank-from-kill-ring): New command.
https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg00801.html
Stefan Kangas [Tue, 24 Nov 2020 19:09:04 +0000 (20:09 +0100)]
* build-aux/update-subdirs: Use lexical-binding in subdirs.el.
Philipp Stephani [Tue, 24 Nov 2020 17:38:36 +0000 (18:38 +0100)]
Add a (broken) unit test to exemplify Bug#11218.
* test/lisp/emacs-lisp/ert-tests.el
(ert-test-with-demoted-errors): New (broken) unit test.
Stefan Kangas [Tue, 24 Nov 2020 17:10:29 +0000 (18:10 +0100)]
; Reintroduce line mistakenly removed in my last commit
Stefan Kangas [Tue, 24 Nov 2020 17:03:31 +0000 (18:03 +0100)]
Remove XEmacs compat code from idlw-help.el
* lisp/progmodes/idlw-help.el (idlwave-do-context-help)
(idlwave-help-show-help-frame): Remove XEmacs compat code.
Stefan Kangas [Tue, 24 Nov 2020 16:39:11 +0000 (17:39 +0100)]
Make XEmacs compat aliases easy-menu-{add,remove} obsolete
* lisp/emacs-lisp/easymenu.el (easy-menu-remove, easy-menu-add):
Make XEmacs compat aliases obsolete.
* lisp/allout.el (allout-setup-menubar):
* lisp/cus-edit.el (Custom-mode):
* lisp/gnus/gnus-art.el (gnus-article-edit-mode):
* lisp/gnus/message.el (message-mode):
* lisp/net/sieve.el (sieve-manage-mode):
* lisp/org/org-agenda.el (org-agenda-mode):
* lisp/org/org-table.el (org-table-edit-formulas, orgtbl-mode):
* lisp/org/org.el:
* lisp/progmodes/cperl-mode.el (cperl-mode):
* lisp/progmodes/hideshow.el (hs-minor-mode):
* lisp/progmodes/idlw-help.el (idlwave-help-mode):
* lisp/progmodes/idlw-shell.el (idlwave-shell-mode):
* lisp/progmodes/idlwave.el (idlwave-mode):
* lisp/progmodes/meta-mode.el (meta-common-mode):
* lisp/progmodes/octave.el (octave-mode):
* lisp/progmodes/prolog.el (prolog-menu):
* lisp/progmodes/tcl.el (tcl-mode):
* lisp/speedbar.el (speedbar-reconfigure-keymaps):
* lisp/term.el (term-mode, term-char-mode, term-process-pager):
* lisp/textmodes/dns-mode.el (dns-mode):
* lisp/wid-browse.el (widget-browse-mode): Don't call above
obsolete aliases.
* lisp/cedet/semantic/grammar.el (semantic-grammar-setup-menu-xemacs):
* lisp/mh-e/mh-folder.el (mh-folder-mode):
* lisp/mh-e/mh-identity.el (mh-identity-add-menu):
* lisp/mh-e/mh-letter.el (mh-letter-mode):
* lisp/mh-e/mh-search.el (mh-search-mode):
* lisp/mh-e/mh-show.el (mh-show-mode):
* lisp/obsolete/otodo-mode.el (todo-mode):
* lisp/progmodes/antlr-mode.el (antlr-mode):
* lisp/progmodes/cc-mode.el (c-mode, c++-mode, objc-mode)
(java-mode, idl-mode, pike-mode):
* lisp/progmodes/sql.el (sql-mode, sql-interactive-mode):
* lisp/progmodes/vhdl-mode.el (vhdl-update-mode-menu)
(vhdl-add-source-files-menu, vhdl-mode):
* lisp/textmodes/reftex-index.el (reftex-index-mode)
(reftex-index-phrases-mode):
* lisp/textmodes/reftex-toc.el (reftex-toc-mode):
* lisp/textmodes/reftex.el (reftex-mode): Only call above obsolete
aliases in XEmacs.
* lisp/progmodes/prolog.el (prolog-inferior-menu):
* lisp/erc/erc-menu.el (erc-menu-add, erc-menu-remove): Don't call
above obsolete aliases. Make obsolete.
* lisp/erc/erc-menu.el (menu, erc-menu-add, erc-menu-remove):
* lisp/progmodes/prolog.el (prolog-inferior-mode): Adjust callers.
* lisp/speedbar.el (speedbar-previous-menu): Make obsolete.
(Bug#44731)
Basil L. Contovounesios [Wed, 18 Nov 2020 12:53:03 +0000 (12:53 +0000)]
Fix handling of defcustom :local tag
For discussion, see the following emacs-devel thread:
https://lists.gnu.org/r/emacs-devel/2020-11/msg00734.html
* lisp/custom.el (custom-declare-variable): Delay call to
make-variable-buffer-local until after user option has been
initialized with a value. Otherwise the user option may be
initialized to nil.
* test/lisp/custom-tests.el (custom--test-local-option)
(custom--test-permanent-option): New :local user options.
(custom-test-local-option): New test for defcustom :local keyword.
Alan Mackenzie [Thu, 25 Jun 2020 17:07:16 +0000 (17:07 +0000)]
CC Mode. Fix an off by one error. Fixes bug #41809
* lisp/progmodes/cc-engine.el (c-full-pp-to-literal): Change > to >= (twice).
Basil L. Contovounesios [Tue, 24 Nov 2020 16:19:55 +0000 (16:19 +0000)]
; Fix last change to gnus-sum.el
* lisp/gnus/gnus-sum.el (gnus-paging-select-next): Add :version tag.
Eli Zaretskii [Tue, 24 Nov 2020 15:04:37 +0000 (17:04 +0200)]
Fix display artifacts when 'display' properties cover newlines
* src/xdisp.c (pos_visible_p): Set glyph_row of scratch iterators
to NULL, to avoid producing glyphs while we figure out the layout.
(Bug#44826)
Mauro Aranda [Tue, 24 Nov 2020 11:48:55 +0000 (08:48 -0300)]
Fix menu binding for files in fileset
* lisp/filesets.el (filesets-remake-shortcut): We want the callback of
the menu item, not a list that contains the callback. (Bug#44764)
Mauro Aranda [Tue, 24 Nov 2020 11:31:18 +0000 (08:31 -0300)]
Fix matching of inline choices for the choice widget
A choice widget should be able to match either no inline values or
inline values, upon request. (Bug#44579)
* lisp/wid-edit.el (choice): New property, :inline-bubbles-p. A
predicate that returns non-nil if the choice widget can act as an
inline widget. Document it.
(widget-choice-inline-bubbles-p): New function, for the
:inline-bubbles-p property of the choice widget.
(widget-inline-p): New function. Use the :inline-bubbles-p property
of the widget, if any.
(widget-match-inline): Use the above to see if the widget can act like
an inline widget. Document it.
(widget-choice-value-create): Account for the case of a choice widget
that has inline members.
(widget-checklist-add-item, widget-editable-list-value-create)
(widget-group-value-create): Use widget-inline-p rather than just
checking for a non-nil :inline property, allowing these functions to
pass the complete information to widgets like the choice widget to
create their values.
* test/lisp/wid-edit-tests.el (widget-test-choice-match-no-inline)
(widget-test-choice-match-all-inline)
widget-test-choice-match-some-inline): New tests, to check that choice
widgets can match its choices, inline or not.
(widget-test-inline-p): New test, for the new function
widget-inline-p.
(widget-test-repeat-can-handle-choice)
(widget-test-repeat-can-handle-inlinable-choice)
(widget-test-list-can-handle-choice)
(widget-test-list-can-handle-inlinable-choice)
(widget-test-option-can-handle-choice)
(widget-test-option-can-handle-inlinable-choice): New tests. This
grouping widgets need to be able to create a choice widget regardless
if it has inline choices or not.
Drew Adams [Tue, 24 Nov 2020 11:00:29 +0000 (08:00 -0300)]
Fix finding filelist for :tree fileset (Bug#976)
* lisp/filesets.el (filesets-files-under): New function, used to get
all files for a :tree fileset.
(filesets-get-filelist): Use it. Look for the directory and the
pattern in the right place inside entry.
Mattias Engdegård [Tue, 24 Nov 2020 09:37:37 +0000 (10:37 +0100)]
Autoload the 'rx' pcase macroexpander (bug#44807)
* lisp/emacs-lisp/rx.el (rx--pcase-macroexpander]): Autoload.
Lars Ingebrigtsen [Tue, 24 Nov 2020 08:27:14 +0000 (09:27 +0100)]
Allow controlling whether SPC in Gnus goes to the next article
* doc/misc/gnus.texi (Summary Maneuvering): Document it.
* lisp/gnus/gnus-sum.el (gnus-paging-select-next): New variable.
(gnus-summary-prev-page, gnus-summary-next-page): Use it.
Lars Ingebrigtsen [Tue, 24 Nov 2020 07:44:30 +0000 (08:44 +0100)]
Make the `C' command work on marked files
* lisp/arc-mode.el (archive-copy-file): Make the `C' command work
on marked files (bug#44753).
Lars Ingebrigtsen [Tue, 24 Nov 2020 07:22:26 +0000 (08:22 +0100)]
Add a user option to control how links are followed in eww
* doc/misc/eww.texi (Advanced): Document it (bug#44783).
* lisp/net/eww.el (eww-use-browse-url): New variable.
(eww-follow-link): Use it.
Itai Seggev [Tue, 24 Nov 2020 05:52:27 +0000 (06:52 +0100)]
Codesign the executable on recene MacOS systems
* src/Makefile.in (temacs$(EXEEXT)): Codesign the executable on
recent (ARM) MacOS systems (bug#43878). Without this, building
Emacs fails.
Copyright-paperwork-exempt: yes
Lars Ingebrigtsen [Tue, 24 Nov 2020 05:41:03 +0000 (06:41 +0100)]
Delete the emacs-server directory upon Emacs exit
* lisp/server.el (server-start): Delete the server directory upon
Emacs exit (bug#44644). This fixes the problem of /tmp/emacs0
directories being left behind when running an Emacs server as root.
Lars Ingebrigtsen [Tue, 24 Nov 2020 05:22:52 +0000 (06:22 +0100)]
Tweak the face of unknown backend indicators in flymake
* lisp/progmodes/flymake.el (flymake--mode-line-format): Don't put
a face on the the "?" unknown backend indicator, because that
looks odd in inactive windows (bug#44689).